/*
 * @lc app=leetcode.cn id=2100 lang=cpp
 *
 * [2100] 适合打劫银行的日子
 */
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>

using namespace std;
// @lc code=start
class Solution {
public:
    vector<int> goodDaysToRobBank(vector<int>& security, int time) {
        int n = security.size();
        vector<int> left(n);
        vector<int> right(n);
        //先遍历数组将连续的天数求出，左右分别记录非递增和非递减
        for (int i = 1; i < n; i++) {
            if (security[i] <= security[i - 1]) {
                left[i] = left[i - 1] + 1;
            }
            if (security[n - i - 1] <= security[n - i]) {
                right[n - i - 1] = right[n - i] + 1;
            }
        }
        vector<int> ans;
        for (int i = time; i < n - time; i++) {
            if (left[i] >= time && right[i] >= time) {
                ans.emplace_back(i);
            }
        }
        return ans;
    }
};
// @lc code=end

//暴力法超时
// vector<int> ret;
//         int n = security.size();
//         if(n < time*2 + 1) {
//             return ret;
//         }
//         int tmp = time;
//         while(tmp + time < n) {
//             int flag = 1;
//             for(int i = tmp-time;i< tmp;i++) {
//                 if(security[i] < security[i+1]) {
//                     flag = 0;
//                     break;
//                 }
//             }
//             for(int i = tmp;i< tmp + time;i++) {
//                 if(security[i] > security[i+1]) {
//                     flag = 0;
//                     break;
//                 }
//             }
//             if(flag) {
//                 ret.push_back(tmp);
//             }
//             tmp++;
//         }
//         return ret;

